import axios from 'axios';
import VueCookies from 'vue-cookies'
import router from '@/router/index.js'
import {
	MessageBox,
	Message
} from 'element-ui'
let flog = true

// import qs from 'qs'
const env = process.env;
// 创建axios实例
// 接口返回的 错误码   401 提示去登录  110 直接弹出错误信息  500 就什么也不提示
const service = axios.create({
	// baseURL: window.g.ApiUrl, // api的base_url
	baseURL: env.VUE_APP_server, // api的base_url
	// timeout: 5000, // 请求超时时间
	// paramsSerializer: function(p) { //固定写法
	// 	return qs.stringify(p, {
	// 		arrayFormat: 'repeat'
	// 	})
	// }
	// headers: {
	//   'Content-Type': 'application/x-www-form-urlencoded'
	// }
	headers: {
		'Content-Type': 'application/json'
	}
});

// request拦截器
service.interceptors.request.use(config => {
	let token = VueCookies.get('sy_token')
	if (token) {
		flog = true
		config.headers['Authorization'] = token
	}

	// config.data = qs.stringify(config.data, {arrayFormat: 'repeat'})
	config.data = JSON.stringify(config.data) // 转为formdata数据格式
	return config;
}, error => {
	console.log(error); // for debug
	Promise.reject(error);
});

// respone拦截器
service.interceptors.response.use(
	response => {
		if (!flog) {
			return false
		}
		if (response.data.code == 401) {
			flog = false
			VueCookies.remove('sy_token')
			VueCookies.remove('sy_avatar')
			VueCookies.remove('sy_username')
			MessageBox.confirm('您还未登陆，没有权限，请登陆后重试！', '提示', {
				confirmButtonText: '去登陆',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				flog = true
				router.push('/Login')
			}).catch(() => {
				router.back()
				flog = true
			});
		} else if (response.data.code == 500 || response.data.code == 666) {
			Message.error(response.data.msg)
		}
		return response.data;
	},
	error => {
		return Promise.reject(error);
	}
);

export default service;